package com.briup.day06;

import java.util.Date;

/**
 * @author 谭梦寻
 * @version 1.1
 * 类 类类型
 */
public class Test01 {
    int a;
    static int b;
/*
        静态方法才可以直接在下面的代码中调用
        因为main方法是static方法,static方法可以在没有对象实例的时候直接调用，
        故可以直接调用main方法,但是因为没有对象实例,所以不能调用非静态方法。
        非静态方法之间可以相互直接调用（java编译器会自动加上this）
        this 放在非静态方法中使用 调用的是该方法的对象 谁调用对象就是谁
   * 实例变量：我们创建了类的多个对象，每个对象都独立的拥有一套类中的非静态属性。
     当修改其中一个对象中的静态属性时，不会导致其他对象中同样的属性值的修改
     //非静态属性不能直接使用 必须创建了类之后才能使用 类名.属性名
      //静态属性可以直接使用
*/
    public static void printStu(Student s) {//地址传递
        s.id = 3123;

//        a = 1; //非静态属性不能直接使用
        b = 3; //静态属性可以直接使用
        System.out.println(s);
    }
    void method(){
        int b;
        System.out.println("method");
//        System.out.println(b); //局部变量需要赋值后操作（未初始化）
    }
    public void method2() {
        method();
    }
    public static void main(String[] args) {

//        method();
        Student student = new Student();
        student.learn();
        Test01 test01 = new Test01();
        test01.method();
        printStu(student);//com.briup.day06.Student@1b6d3586
        System.out.println(student.id);//同一个地址 对应的属性值一样
    }
}
class Student{
    //    类 = 属性 + 行为
    public long id;//学号
    public String name;
    public Date dob;//出生日期
    public double score;//成绩
    public String schoolName;//学校
//        private double height;//身高 要需要写

    //        定义(非静态方法)方法
    public void learn() {
//            学生的学习行为
        System.out.println("learn....");
        return;
    }
    public void play() {
        System.out.println("play....");
    }
    public void say() {
        System.out.println("say...");
    }
    public void sleep() {
        System.out.println("sleep...");
    }

}
